package com.example.nirvana.design.singleton;

/**
 * 单例模式-懒汉式
 * @decription
 * 为了解决饿汉式占着茅坑不拉屎的问题，就产生了下面这种简单懒汉式的写法，一开始先申明个对象，但是先不创建他，当用到的时候判断一下是否为空，如果为空我就创建一个对象返回，如果不为空则直接返回，为什么叫懒汉式，就是因为他很懒啊，要等用到的时候才去创建，看上去很ok，但是在多线程的情况下会产生线程安全问题。
 */
public class LazySimpleSingleton {
    private static LazySimpleSingleton lazySimpleSingleton;

    private LazySimpleSingleton() {

    }

    /**
     * 可以加锁保证线程安全
     * @return
     */
    public synchronized LazySimpleSingleton getInstance() {
        if(lazySimpleSingleton == null) {
            lazySimpleSingleton = new LazySimpleSingleton();
        }
        return lazySimpleSingleton;
    }
}
